package com.hs.srm.admin.modules.orders.vo;

import cn.afterturn.easypoi.excel.annotation.Excel;
import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotations.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.hs.srm.base.common.annotation.AddressMapping;
import com.hs.srm.base.common.annotation.DictMapping;
import com.hs.srm.base.common.base.CloneableEntity;
import com.hs.srm.base.common.utils.AddressDataUtil.AddressType;
import com.hs.srm.base.common.utils.DictDataUtil.DictType;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.io.Serializable;
import java.util.Date;

/**
 * @author yanfei
 * <p>
 * 订单数据
 * @date 2019年3月19日
 */
@Setter
@Getter
@ToString
public class ScmPoItemVo implements Serializable, CloneableEntity<ScmPoItemVo> {

    /**
     * 克隆当前对象
     *
     * @return
     */
    @Override
    public ScmPoItemVo clone() {
        try {
            return (ScmPoItemVo) super.clone();
        } catch (CloneNotSupportedException ex) {
            ex.printStackTrace();
        }
        return null;
    }

    private static final long serialVersionUID = -135324057878529082L;

    /*
     * 行项目ID
     */
    private java.lang.String poItemId;

    /*
     * 行项目号
     */
    private java.lang.String itemNo;

    /*
     * 物料编码
     */
    private java.lang.String materialCode;

    /*
     * 物料描述
     */
    private java.lang.String materialDesc;

    /*
     * 工厂
     */
    @DictMapping(type = DictType.GC)
    private java.lang.String factory;

    /*
     * 库存地点
     */
    @DictMapping(type = DictType.KCDD)
    private java.lang.String storage;

    /*
     * 物料组
     */
    @DictMapping(type = DictType.WLZ)
    private java.lang.String materialGroup;

    /*
     * 需求者/请求者姓名
     */
    private java.lang.String requester;

    /*
     * 采购订单数量
     */
    @TableField("po_count")
    private java.math.BigDecimal poCount;

    /*
     * 采购订单的计量单位
     */
    @DictMapping(type = DictType.JLDW)
    private java.lang.String poUnit;

    /*
     * 含税单价
     */
    private java.math.BigDecimal poPrice;

    /*
     * 价格单位
     */
    private java.lang.String priceUnit;

    /*
     * 税码
     */
    @DictMapping(type = DictType.SDM)
    private java.lang.String taxCode;

    /*
     * 订单总价值
     */
    private java.math.BigDecimal totalPrice;

    /*
     * 发票收据标识
     */
    private java.lang.String receiveFlag;

    /*
     * 采购申请编号
     */
    private java.lang.String prNo;

    /*
     * 采购申请的项目编号
     */
    private java.lang.String prItemNo;

    /*
     * 交货日期
     */
    //@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @JSONField(format = "yyyy-MM-dd")
    private java.util.Date deliveryDate;

    /*
     * 供应商回复交期
     */
    //@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @JSONField(format = "yyyy-MM-dd")
    private java.util.Date replyDate;

    /*
     * 成本中心
     */
    private java.lang.String costCenter;

    /*
     * 备注
     */
    private java.lang.String remark;

    /*
     * 是否已收货
     */
    private java.lang.String receiptedFlag;

    /*
     * 创建人
     */
    private java.lang.String createdBy;

    /*
     * 创建日期
     */
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private java.sql.Timestamp creationDate;

    /*
     * 修改人
     */
    private java.lang.String lastUpdatedBy;

    /*
     * 修改日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private java.sql.Timestamp lastUpdateDate;

    /*
     * 建议交期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private java.util.Date suggestDate;

    /*
     * 订单ID
     */
    @Excel(name = "订单ID", orderNum = "1")
    private java.lang.String poId;

    /*
     * 采购凭证号
     */
    private java.lang.String poNo;

    /*
     * 订单类型
     */
    @DictMapping(type = DictType.CGDDLX)
    private java.lang.String poType;

    /*
     * 供应商
     */
    private java.lang.String vendorId;

    /*
     * 公司代码
     */
    @DictMapping(type = DictType.GC)
    private java.lang.String companyCode;

    /*
     * 采购组
     */
    @DictMapping(type = DictType.CGZ)
    private java.lang.String purchGroup;

    /*
     * 采购组织
     */
    @DictMapping(type = DictType.CGZZ)
    private java.lang.String purchOrg;

    /*
     * 采购订单更改日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private java.util.Date sapUtime;

    /*
     * 付款条件代码
     */
    @DictMapping(type = DictType.FKTJ)
    private java.lang.String payCondition;

    /*
     * 国际贸易条款
     */
    @DictMapping(type = DictType.GJMYTK)
    private java.lang.String i18nTradeTerms;

    /*
     * 货币码
     */
    @DictMapping(type = DictType.BZ)
    private java.lang.String currencyCode;

    /*
     * 公司名称
     */
    private java.lang.String companyName;

    /*
     * 城市
     */
    @AddressMapping(type = AddressType.CITY)
    private java.lang.String city;

    /*
     * 国家
     */
    @AddressMapping(type = AddressType.COUNTRY)
    private java.lang.String country;

    /*
     * 电话
     */
    private java.lang.String telNo;

    /*
     * 订单标志
     */
    private java.lang.String poFlag;

    /*
     * 审批流程状态
     */
    @DictMapping(type = DictType.LCZT)
    private java.lang.String state;

    /*
     * 供应商名称
     */
    private String vendorName;

    /**
     * 供应商邮箱
     */
    private String email;

    /*
     * 供应商SRM编码
     */
    private String srmCode;

    /*
     * 供应商SAP编码
     */
    private String sapCode;

    /**
     * deliver 供应商分批发货表中pk_id
     */
    private String deliverId;
    /*
     * 订单确认
     */
    private String itemStatus;
    /*
     * 图片url
     */
    private String url;

    /*
     * 待发货的数量
     */
    private java.math.BigDecimal backOrders;

    /*
     * 已发货的数量
     *
     */
    private java.math.BigDecimal shippedQty;
    /*
     *
     *本次要发的量
     */
    private java.math.BigDecimal dueOut;

    /*
     *
     *upload_file_remark主键
     */
    private String uploadId;

    /*
     *
     *上传试用报告标志
     */
    private java.lang.Integer uploadFlag;

    /*
     * 第一次试用报告文件路径
     */
    private String reportFirstFile;

    /*
     * 第一次试用备注
     */
    private String reportFirstRemark;


    /*
     * 第二次试用报告文件路径
     */
    private String reportSecondFile;

    /*
     * 第二次试用备注
     */
    private String reportSecondRemark;

    /*
     * 第二次试用报告上传时间
     */
    private Date reportSecondDate;

    /*
     * 第三次试用报告文件路径
     */
    private String reportThirdFile;

    /*
     * 第三次试用备注
     */
    private String reportThirdRemark;

    /*
     * 第三次试用报告上传时间
     */
    private Date reportThirdDate;

    /*
     * 供应商承认书路径
     */
    private String supplierConfirmFile;

    /*
     *供应商承认书备注
     */
    private String supplierConfirmRemark;

    /*
     *供应商承认书上传时间
     */
    private Date supplierConfirmDate;

    /*
     * 有害物质报告路径
     */
    private String harmfulSubstanceFile;

    /*
     * 有害物质报告备注
     */
    private String harmfulSubstanceRemark;

    /*
     * 有害物质报告上传时间
     */
    private Date harmfulSubstanceDate;

    /*
     * MSDS&材料成分表文件路径
     */
    private String msdsFile;

    /*
     * MSDS&材料成分表备注
     */
    private String msdsRemark;

    /*
     * MSDS&材料成分表上传时间
     */
    private Date msdsDate;

    /*
     * 不使用冲突矿石文件路径
     */
    private String conflictMineralFile;

    /*
     * 不使用冲突矿石文件备注
     */
    private String conflictMineralRemark;

    /*
     * 不使用冲突矿石文件上传时间
     */
    private Date conflictMineralDate;

    /*
     * 出货检测报告
     */
    private String finalQualityControlFile;

    /*
     *出货检测报告上传时间
     */
    private Date finalQualityControlDate;

    /*
     * 送货明细
     */
    private String deliveryDetailFile;

    /*
     * 送货明细上传时间
     */
    private Date deliveryDetailDate;

    /*
     * 发货状态
     */
    private String deliverStatus;

    /*
     * 路径
     */
    private String filePath;

    /**
     * 检测报告类型
     */
    private String fileType;

    /**
     * 交货过量限度
     */
    private String limitFull;

    /**
     * 交货不足限度
     */
    private String limitLess;
    /**
     * 免费的
     */
    private Integer free;
    /* * 试用次数
     */
    private Integer reason;

}
